package com.wjl.partnerMatching.exception;

import com.wjl.partnerMatching.common.BaseResponse;
import com.wjl.partnerMatching.common.ErrorCode;
import com.wjl.partnerMatching.common.ResultUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * @Author wangjunliang
 * @Date 2025/05/30 09:27
 * @Version 1.0
 * @Desc 全局异常处理器
 */
@Slf4j
@RestControllerAdvice
public class GlobalException {

    @ExceptionHandler(BusinessException.class)
    public BaseResponse<?> businessExceptionHandler(BusinessException e) {
        log.error("BusinessException", e);
        return ResultUtils.error(e.getCode(), e.getMessage());
    }


    @ExceptionHandler(RuntimeException.class)
    public BaseResponse<?> handlerException(RuntimeException e) {
        log.error("RuntimeException", e);
        log.error("error_msg: {}", e.getMessage());
        // if (e instanceof NotLoginException) {
        //     // 未登录异常 - 用户未登录
        //     NotLoginException ee = (NotLoginException) e;
        //     return ResultUtils.error(ErrorCode.NOT_LOGIN_ERROR, e.getMessage());
        // } else if (e instanceof NotRoleException) {
        //     // 角色异常 - 无此角色
        //     NotRoleException ee = (NotRoleException) e;
        //     return ResultUtils.error(ErrorCode.NOT_ROLE_ERROR, "无此角色：" + ee.getRole());
        // } else if (e instanceof NotPermissionException) {
        //     // 权限异常 - 无此权限
        //     NotPermissionException ee = (NotPermissionException) e;
        //     return ResultUtils.error(ErrorCode.NOT_AUTH_ERROR, "无此权限：" + ee.getPermission());
        // } else if (e instanceof DisableServiceException) {
        //     // 被封禁异常 - 账号被封禁
        //     DisableServiceException ee = (DisableServiceException) e;
        //     return ResultUtils.error(ErrorCode.FORBIDDEN_ERROR, "账号被封禁：" + ee.getDisableTime());
        // }

        // 普通异常
        return ResultUtils.error(ErrorCode.SYSTEM_ERROR, "系统异常");
    }
}
